Introducción a R

Crear código en R, uso colaborativo y reproducible

  • Introducción
  • Escribir en R
  • Buenas prácticas
  • Uso colaborativo

Introducción

R es un lenguaje y entorno de programación especializado en:

Análisis estadístico, visualización de datos y ciencia de datos.

Utilizado por investigadores, analistas y científicos para explorar, modelar y comunicar información basada en datos de forma eficiente y reproducible.

Lo que vas a aprender:

  • Mejorar la comprensión y la práctica estadística.

  • Desarrollar habilidades en programación en R.

  • Aprender flujos de trabajo eficientes, limpios y reproducibles.

  • Saber buscar información

  • No enredarse en errores

Lo que no vas a aprender

  1. A programar en plan pro sin mirar internet o chatgpt

  2. A hacer páginas web

  3. A dejar de pelearte con la estadística

Objetivos de la clase

R y Rtudio

R → Es el lenguaje de programación y el motor que realiza los cálculos estadísticos y el análisis de datos.

RStudio → Es un entorno de desarrollo integrado (un programa) que facilita el uso de R con una interfaz amigable, paneles, autocompletado y herramientas visuales.

¿Qué puede hacer R?

R es una calculadora

Puede leer tablas, generarlas, guardarlas

Hacer estadística compleja (y sobre todo basada en biología)

Crear páginas webs, gráficos interactivos, presentaciones,

Crear nuevos paquetes de R

Hacer funciones

Workflow: lo básico básico

Es una calculadora

2 + 3     
[1] 5
10 - 4    
[1] 6
3 * 5     
[1] 15
20 / 4    
[1] 5

Acumular información

La magia de los objetos

x <- 10    
y <- 5
suma <- x + y
suma
[1] 15
suma + 7
[1] 22

Espera, pero ¿qué son los objetos?

Los objetos empiezan por una letra

Son sensibles a mayusculas

Tienen que llevar nombres coherentes y un orden

yo_uso_la_serpiente <- 10
OtraGenteUsaElCamello <- 9
otra.gente.usa.los.puntos <- 9
Hayque_evitar.esto10 <- 2

Tipos de objetos

Hay distintos tipos de objetos

numero <- 1:10
numero
 [1]  1  2  3  4  5  6  7  8  9 10
caracter <- "del uno al diez"
caracter
[1] "del uno al diez"
#numero * caracter

Vectores y funciones

numeros <- c(1, 2, 3, 4, 5) 
otros_numeros <- 1:40
otros_numeros
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
[26] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
otros_numeros + 10
 [1] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
[26] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
promedio <- mean(numeros)
promedio
[1] 3
promedio * numeros
[1]  3  6  9 12 15
numeros / otros_numeros
 [1] 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 0.16666667
 [7] 0.28571429 0.37500000 0.44444444 0.50000000 0.09090909 0.16666667
[13] 0.23076923 0.28571429 0.33333333 0.06250000 0.11764706 0.16666667
[19] 0.21052632 0.25000000 0.04761905 0.09090909 0.13043478 0.16666667
[25] 0.20000000 0.03846154 0.07407407 0.10714286 0.13793103 0.16666667
[31] 0.03225806 0.06250000 0.09090909 0.11764706 0.14285714 0.02777778
[37] 0.05405405 0.07894737 0.10256410 0.12500000

Generadores de distribuciones

# Consecutivos del 1:10
1:10
 [1]  1  2  3  4  5  6  7  8  9 10
# Un vector de 5 números aleatorios con distribución uniforme
runif(5)
[1] 0.3762137 0.7214532 0.9053097 0.4962807 0.3231461
# Ahora que 3 números vayan del 0 al 100
runif(3, min=0, max=100)
[1] 15.02724 62.93379 88.91741
# 4 números con una distribución normal
rnorm(4)
[1]  1.0256020 -0.3757977 -0.9777637 -1.9666420
# Especificando la media y la desviación
x <- rnorm(400, mean=50, sd=10)

# Sample = elegir 3 bolas de un bingo en el que hay 100
sample(0:100, 3, replace=TRUE) 
[1] 25 85 41
# Generador de secuencias: del 0 al 100 cada 10
seq(0, 100, 10)
 [1]   0  10  20  30  40  50  60  70  80  90 100

Crear funciones

# Queremos la media de nuestros números transformados a logaritmo

vector <- seq(1, 100, 10)
mean (log (vector))
[1] 3.380067
sd (log (vector))
[1] 1.355705
vector2 <- seq(1, 300, 50)
mean (log (vector2))
[1] 4.065497
sd (log (vector2))
[1] 2.069674
log_vect <- function (y) {
  mean_y <- mean (log (y+1))
  sd_y <- sd (log (y+1))
  print(paste("La media es", mean_y, ", la desviación estándar es:", round(sd_y,2)))
  return(log(y))
}

vector3 <- seq(1, 300, 4)
distribution = log_vect (vector3)
[1] "La media es 4.70839604852934 , la desviación estándar es: 0.98"
hist(distribution)

Ejercicios

# 1. Calcula el minimo valor de 100 valores aleatorios según una distribución normal
min (rnorm (100))
[1] -2.636211
# 2. Dada una secuencia de 20 números seguidos (del 0 al 20), genera los pares y guárdalo en un objeto.
pares <- seq (0, 20, 2)

# 3. Ejercicio:

  # Crea un vector con 20 números aleatorios entre 0 y 50.
  # Calcula el promedio y la desviación estándar.
  # Multiplica todos los valores por 2.
  # Dibuja un histograma.
  #¿Cómo cambia el promedio después de multiplicar por 2?

mi_vector <- runif(20,0,50)
mean (mi_vector)
[1] 28.29046
sd (mi_vector)
[1] 12.40461
mi_vector_2 <- mi_vector*2
hist(mi_vector_2)
# 4. Haz una función que me diga si un número cualquiera es par o no (opcional)
que_tipo_de_numero_soy <- function (x) {
ifelse(x %% 2 == 0, "par", "impar")
}

Compartir código

  • git. Es una herramienta de control de versiones que además permite trabajar en equipo
  • GitHub (portfolio de programador) Perfil

Escribir textos, informes, artículos

  • Quarto
  • Rmarkdown

Bibliografía

cookbook